package org.gruposp2p.proyectokarma.service

import java.io.FileInputStream;
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.ContentType.JSON
import static groovyx.net.http.Method.*
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import javax.security.auth.x500.X500PrivateCredential;
import java.security.KeyStore;
import org.tobin.seguridad.cms.*;
import org.tobin.util.*;
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH

class MotorDeFirmasService {	
		
	static transactional = true
	
	private ValidadoraCMS validadora
	private FirmadoraCMS firmadora
	
	void inicializar() {
		log.debug "inicializar"
		File keyStore = new File("./cms/karma.jks");
		firmadora = new FirmadoraCMS(FileUtils.getBytesFromFile(keyStore), 
			"firma", "dniednie".toCharArray())
		FileInputStream fis =  new FileInputStream("./cms/ac_raiz_dnie.crt");
		validadora =  new ValidadoraCMS(FileUtils.loadCertificateFromFile(fis))
	}
	
	def obtenerArchivoFirmado (String textoAFirmar) {
		log.debug "obtenerArchivoFirmado - textoAFirmar: ${textoAFirmar}"
		return firmadora.getArchivoFirmado(textoAFirmar)
	}

	def obtenerCadenaFirmada (String textoAFirmar) {
		log.debug "obtenerCadenaFirmada - textoAFirmar: ${textoAFirmar}"
		return firmadora.getCadenaFirmada(textoAFirmar)
	}
	
	def validarFirma (byte[] textoFirmado) {
		log.debug "validarFirma - textoFirmado: " + new String(textoFirmado)
		return validadora.isValid(textoFirmado)
	}
	
}

